Treatment controller

ABSTRACT

A content modification system includes a treatment controller which may be hosted at a web server. The treatment controller receives a request for content from a user. One example of a request is an HTTP request for a web page. The treatment controller determines a representation of the requested content and receives a modification instruction for modifying the requested content. The treatment controller is operable to modify the representation according to the instructions and render the representation to a predetermined format for delivery to the user.

PRIORITY

The present application claims priority to U.S. Provisional PatentApplication Ser. No. 61/382,662 filed Sep. 14, 2010, which isincorporated by reference in its entirety.

BACKGROUND

In some instances, content providers may desire to deliver different webpages to different users or different categories of users. In oneexample, an online retailer may conduct online experiments to determinewhich web page is most successful in achieving a sale or some otherobjective. To conduct the experiment, different treatments are deliveredto browsers of users in different control groups and their actions arecaptured. A treatment is content that is presentable online to a user,for example, via a browser, but has one or more features that can bevaried so different variations of the treatment can be tested orotherwise presented. The treatment may include an online advertisementor a web page or any component of a web page that has one or moreattributes, such as color, size, shape, location, text, etc., that canbe varied. The treatment is presented to the users. Then, their actions,in response to the treatment, are tracked using the IDs generated fromtheir browser attributes and possibly other user device attributes. Thecaptured actions may be used to determine the effectiveness of differenttreatments.

In another example, once the most successful treatment are identifiedfor a group, that treatment is used to configure other content similarlyfor delivery to the group. Thus, different treatments may be presentedto different groups of users. These are some examples whereby differentweb pages may be delivered to different users.

To implement a system that can re-configure a web page on-the-fly can bedifficult, especially in real-time without undue delay for presentingthe web page to the user.

BRIEF DESCRIPTION OF DRAWINGS

The embodiments of the invention will be described in detail in thefollowing description with reference to the following figures.

FIG. 1 illustrates a system, according to an embodiment;

FIG. 2 illustrates a method for rendering a treatment, according to anembodiment;

FIG. 3 illustrates a method for interfacing with a site optimizer tomodify content, according to an embodiment; and

FIG. 4 shows a computer system that may be used as a hardware platformfor one or more components of the system in FIG. 1, according to anembodiment.

DETAILED DESCRIPTION OF EMBODIMENTS

For simplicity and illustrative purposes, the principles of theembodiments are described by referring mainly to examples thereof. Inthe following description, numerous specific details are set forth inorder to provide a thorough understanding of the embodiments. It will beapparent however, to one of ordinary skill in the art, that theembodiments may be practiced without limitation to these specificdetails. In some instances, well known methods and structures have notbeen described in detail so as not to unnecessarily obscure theembodiments.

1. Overview

According to an embodiment, a treatment controller located at a webserver is configured to deliver different web pages including differenttreatments to different users or groups of users. A treatment is contentthat is presentable online to a user, for example, via a browser, buthas one or more features that can be varied so different variations ofthe treatment can be tested or otherwise presented. The treatment mayinclude an online advertisement or a web page or any component of a webpage that has one or more attributes, such as color, size, shape,location, text, etc., that can be varied. The treatment controllerperforms real time dynamic page manipulation, for example, throughmodification of web control attributes using a render object model. Thetreatment controller logically sits between the web server and anoptimization service and identifies which parts of a web page can bechanged and then uses rules and instructions received from theoptimization service in order to modify the content on the fly. Themodified web page is delivered to the user's browser from the webserver.

The treatment controller allows dynamic optimization of web pageswithout intrusion of scripts on the user's browser. For example,JavaScript running on a browser is commonly used to display web pages ona web browser. However, JavaScript is visible to the user, so users canview the scripts to identify modifications to web pages if treatmentswere rendered through JavaScript. This could influence the user'sbehaviour negatively, which may obfuscate any benefit that could havebeen derived from a treatment. Furthermore, if a browser does not runJavaScript, then the treatments could not be generated throughJavaScript.

2. System

FIG. 1 illustrates a system 100, according to an embodiment. The system100 includes web server 101, which may host a treatment controller 102,or the treatment controller is hosted on another server connected to theweb server 101. The web server 101 receives web page requests from theusers 110 a-n and delivers the requested web pages to the users 110 a-nvia the Internet. The users 110 a-n have user devices, such as personalcomputers, smart phones, etc., to send HTTP requests for web pages tothe web server 101 and display web pages received in response to therequests on the devices. The devices may include browsers for displayingweb pages. The users or their devices are also referred to as clients.

The treatment controller 102 passes a request for a web page along witha unique ID for a client to the optimization digital platform 103. Theoptimization digital platform 103 may store rules for modifying webpages to generate an optimized web page for the user. An optimized webpage may include a web page that is modified according to rules orinstructions determined by the optimization digital platform 103. Theoptimization digital platform 103, for example, using stored rules and aprofile for the user, identifies web page modifications and sendsinformation for the modifications to the treatment controller 102. Thetreatment controller 102 modifies the web page and provides the modifiedweb page to the web server 101, which delivers the modified web page tothe client.

The optimization digital platform 103 may comprise an optimizationservice 120, a site optimizer 121, a digital platform manager 122, aprofile module 123 and a data storage 124. The components of theoptimization digital platform 103 are shown in a single platform.However, the components may operate on their own computer systems andhave their own data storage. For example, the optimization service 120,the site optimizer 121, the digital platform manager 122 and the profilemodule 123 may each run on their own server or set of servers andcommunicate via a network. The data storage 124 may include one or moredatabases or other storage systems. The data storage 124 stores any dataused by the optimization digital platform 103. The data storage 124 maycomprise multiple data storages for the components of the optimizationdigital platform 103. For example, each of the optimization service 120,the site optimizer 121, the digital platform manager 122 and the profilemodule 123 may have their own data storage or share data storage. Also,the optimization digital platform 103 and its components may includesoftware running on a computer system including hardware.

The optimization service 120 provides content and instructions to modifythe content to the treatment controller 102. The content, for example,includes web pages to be provided to the users 110 a-n in response toHTTP requests from the users 110 a-n receives at the web server 101. Thecontent to be modified that is provided to the treatment controller 102may be represented in a data structure, such as a control tree. Handlers104 at the treatment controller 102 are executed to interface with thecontrol tree and perform the modifications indicated in the modificationinstructions.

The optimization service 120 also interfaces with the digital platformmanager 122 to determine the modification instructions to send to thetreatment controller 102. The digital platform manager 122 selectscontent to be provided to the users 110 a-n in response to theirrequests. For example, the digital platform manager 122 receives therequests from the users 110 a via the optimization service 120. Thedigital platform manager 122 determines content to be provided to theusers 110 a-n based on profiles for the users 110 a-n or other factors.User profiles may be stored in the data storage 124. The profile module123 may identify a user from data received with the user requests, andretrieve the profile for the user from the data storage 124 to provideto the digital platform manager 122. The digital platform manager 122may use rules and conditions stored in the data storage 124 and userattributes from a profile to select content to send to the user. Thecontent may include a treatment with attributes that are modifiable. Thedigital platform manager 122 may select one or more attributes to modifyfor the content according to the rules stored in the data storage 124.The digital platform manager 122 sends an indication of the attributesand elements of the content to modify to the optimization service 120,and the optimization service 120 sends modification instructions to thetreatment controller 102 according to the modifications specified by thedigital platform manager 122.

The digital platform manager 122 may also instruct the treatmentcontroller 102, via the optimization service 120, to capture online userbehaviour or other information pertaining to the users 110 a-n. Forexample, the treatment controller 102 may be instructed to capture userbehaviour in response to sending the modified content (i.e., thetreatment) to the users 110 a-n. This may include behaviour such asonline purchases, subsequent click throughs, etc. This behaviour may bestored in the data storage 124 and used to determine whether a treatmentis eliciting a desired response, such as whether the treatmentinfluences a user to make a purchase or seek further productinformation.

The site optimizer 121 allows developers or other types of users to viewtreatments and make modifications to treatments. For example, atreatment may include modified text and images in a web page. Adeveloper may view the web page with the modified text and images andmake changes as needed so the web page conforms to desired standards.

3. Method

FIG. 2 illustrates a flow chart of a method 200 for rendering atreatment comprised of modified content from a web server, according toan embodiment. The method 200 and a method 300 discussed below aredescribed with respect to the system 100 shown in FIG. 1 by way ofexample. The methods may be practiced in other systems. Also, one ormore of the steps may be performed in different orders than shown orperformed substantially simultaneously.

At step 201, the web server 101 receives a request from, for example,the user 110 a for content. The request may be an HTTP request for a webpage.

At step 202, the treatment controller 102 receives the HTTP request fromthe web server 101.

At step 203, the treatment controller 102 determines whether there areany data capture instructions for the HTTP request. For example, thetreatment controller 102 sends a message to the optimization service 120to get data capture instructions, if any, that are related to therequest or the user 110 a. The optimization service 120 may send datacapture instructions to the treatment controller 102 to capture thevisitor ID, capture the query string in the HTTP, to capture profiledata, to capture data related to purchases or to capture any other dataassociated with the user 110 a or the HTTP request.

At step 204, the treatment controller 102 captures the informationspecified in the data capture instructions and sends the capturedinformation to the optimization service 120. The treatment controller102 may access a profile database to get user attributes for the user110 a sending the HTTP request. The user attributes may be sent to theoptimization service 120. The digital platform manager 122 may use theuser attributes and other information captured for the user to select atreatment. For example, if the captured data identifies the age of theuser, the location of the user, and a product for which information isbeing requested, the digital platform manager 122 identifies a treatmentaccording to those user attributes.

At step 205, the treatment controller 102 sends a message to theoptimization service 120 to get content modification instructions. Themessage may include the user attributes and/or other data requested tobe captured as described above at steps 203 and 204. The message forgetting content modification instructions may be sent from theoptimization service 120 to the digital platform manager 122, and thedigital platform manager 122 determines the modifications to the contentrequested in the HTTP request from the user 110 a, which is the newtreatment. The optimization service 120 may receive an indication of themodifications for the new treatment specified by the digital platformmanager 122, and generate modification instructions to be implemented bythe treatment controller 102 so the treatment controller 102 can modifythe requested content according to the instructions.

At step 206, the treatment controller 102 receives the requested contentand loads the content into memory. The requested content may be receivedfrom the optimization service 120. In one embodiment, the treatmentcontroller 102 receives a data structure from the optimization service120 that is representative of the requested content at step 206. Forexample, the requested content may be a web page, and the data structuremay include controls that identify elements (e.g., images, text, dropdown menus, etc.) or sections of the content that can be modifiedaccording to modification instructions. In one example, the datastructure comprises a control tree that may be generated using a webapplication framework, such as ASP.net. The data structure is arepresentation of the requested content. A control may be represented byother methods of encapsulating and identifying content, such as ASP.netform controls, model-view-controller (MVC) helper elements, etc.

At step 207, the treatment controller 102 receives the modificationinstructions from the optimization service 120 that specify how therequested content is to be modified to create the new treatment.Examples of instructions may include to change a link on a web page,redirect an entire web page, change text on a web page, change image ona web page, or change other attributes of a web page. For example, acontrol tree received at step 206 is loaded into memory, where it may bemodified according to the instructions received at step 207. Themodification instructions may specify modifications to controls in thecontrol tree that will modify various elements of a requested web page.

At step 208, the treatment controller 102 modifies the requested contentaccording to the instructions received from the optimization service 120at 207. The treatment controller 102 reads each modification instructionto perform the instructed modifications on the content. If themodification instruction is for modifying an existing control in thecontrol tree, the treatment controller 102 identifies the control in thecontrol tree specified in the modification instruction. The instructionmay specify a control ID if available, and the treatment controller 102parses the control tree to identify the control ID for the control to bemodified. In another example, the entire control syntax is specified inthe modification instruction so the control to be modified can beidentified from the control tree.

The modification instruction may specify to modify an attribute of thecontrol. The treatment controller 102 modifies the attribute asindicated in the modification instruction. A software handler in thetreatment controller 102 may use an application program interface forASP.net to interface with the control tree and modify the attribute forthe control. By way of example, the control to be modified may representa link, text or an image in a web page. The attribute to be modified,for example, may be a new URL, new font size, or new image size. Anothermodification may be to add or remove a control. If a control is beingadded, the control location, and control attributes may be specified inthe modification instruction so the treatment controller 102 can add thecontrol in the control tree in the correct location. If a control is tobe removed, the treatment controller 102 parses the control tree to findthe control and removes it.

At step 209, the treatment controller 102 generates the modifiedcontent. For example, the control tree loaded into memory, which wasmodified at step 208, is rendered to generate HTML for a web page to bedelivered to the user 110 a. Rendering the control tree to generate theHTML is an example of converting the modified representation of therequested content to a format viewable by a user at a user device.

At step 210, the web server 101 sends the modified content to the user110 a. For example, the HTML is sent to a browser of the user device forthe user 110 a, and a web page is displayed via the browser. The webserver 101 may continue to capture data for the user 110 a after themodified content is sent to the user 110 a. For example, the datacapture instructions identified at step 203 may specify the treatmentcontroller 102 to capture subsequent online behavior of the user 110 aafter the modified content is delivered to the user 110 a. This mayinclude storing actions, such as whether a purchase was made or anindication of other web pages visited by the user 110 a. Thisinformation may be used to evaluate whether the modified content waseffective in influencing the behavior of the user 110 a as desired.

FIG. 3 illustrates a flow chart of a method 300 for interfacing with thesite optimizer 121 to modify content, according to an embodiment.

At step 301, the treatment controller 102 receives the content to bemodified and modifies the content according to modificationinstructions, such as described above with respect to steps 206-208.

At step 302, the treatment controller 102 generates a representation ofthe modified content, and at step 303, the treatment controller sendsthe representation to the site optimizer 121. For example, the treatmentcontroller 102 modifies the control tree according to the modificationinstructions, and the modified control tree is stored in memory, forexample, at the web server 101. The treatment controller 102 generatesan XML file from the control tree that indicates how the control treemaps to HTML that is rendered from the control tree. For example, theXML file specifies the attributes for each control. The XML file is sentto the site optimizer 121 from the treatment controller 102. Thetreatment controller 102 may also send the modified content (e.g., HTMLgenerated from the modified control tree) to the site optimizer 121.

At step 304, the site optimizer 121 displays the modified content (e.g.,a web page) and the XML indicates the attributes of the controls in theweb page that can be modified. A web developer or another type of usermay view the web page and make changes to the web page by modifying anattribute indicated in the HTML file.

At step 305, the modified attribute is received at the treatmentcontroller 102. For example, the site optimizer 121 sends a messageidentifying any attributes modified by the developer to the treatmentcontroller 102.

At step 306, the treatment controller 102 modifies the control tree toinclude the modified attribute received at step 305.

At step 307, the treatment controller 102 renders the control tree togenerate the modified content in HTML, which includes the changesreceived from the site optimizer 121. Then, the modified content may besent to the user 110 a. The method 300 may be performed prior to step210 of the method 200 to allow for a developer to make changes asneeded.

FIG. 4 shows a computer system 400 that may be used as a hardwareplatform for one or more components of the system 100. The computersystem 400 may be used as a platform for executing one or more of thesteps, methods, modules and functions described herein that may beembodied as software stored on one or more computer readable mediums.The computer readable mediums may be non-transitory, such as storagedevices including hardware.

The computer system 400 includes a processor 402 or processing circuitrythat may implement or execute software instructions performing some orall of the methods, modules, functions and other steps described herein.Commands and data from the processor 402 are communicated over acommunication bus 404. The computer system 400 also includes a computerreadable storage device 403, such as random access memory (RAM), wherethe software and data for processor 402 may reside during runtime. Thestorage device 403 may also include non-volatile data storage. Thecomputer system 400 may include a network interface 405 for connectingto a network. It will be apparent to one of ordinary skill in the artthat other known electronic components may be added or substituted inthe computer system 400.

One or more of the functions or steps described herein and one or moreof the components of the systems described herein may be implemented ascomputer readable instructions stored on a computer readable medium,such as memory and/or other types of data storage that arenon-transitory, and executed on a computer system, for example, by aprocessor, application-specific integrated circuit (ASIC), or othercontroller. The code may exist as software program(s) comprised ofprogram instructions in source code, object code, executable code orother formats. Examples of computer readable medium include conventionalcomputer system RAM (random access memory), ROM (read only memory),EPROM (erasable, programmable ROM), EEPROM (electrically erasable,programmable ROM), hard drives, and flash memory.

While the embodiments have been described with reference to examples,those skilled in the art will be able to make various modifications tothe described embodiments without departing from the scope of theclaimed embodiments.

1. A content modification system comprising: a web server to receive arequest from a client for a web page and send an optimized web page tothe client in response to the request; a treatment controller at the webserver and configured to receive a representation of the requested webpage from an optimization digital platform and to receive at least onemodification instruction for the requested web page from theoptimization digital platform, wherein the representation includescontrols representing elements of the requested web page and the atleast one modification instruction identifies a control in therepresentation to modify; and a handler at the treatment controller tointerface with the representation to identify the control in therepresentation to be modified and to modify the control in therepresentation as specified in the at least one modification instructionto generate the optimized web page.
 2. The content modification systemof claim 1, wherein the treatment controller renders the representationwith the modified control to HTML, and the web server is to send theHTML to the client.
 3. The content modification system of claim 1,wherein the at least one modification instruction comprises anindication to modify an attribute of the control, and the handler parsesthe representation to identify the control to be modified, identifiesthe attribute in the control to be modified, and modifies the attributeas specified in the at least one modification instruction.
 4. Thecontent modification system of claim 1, wherein the at least onemodification instruction comprises a modification instruction to inserta new control in the representation and the handler determines alocation of the new control and attributes for the new control from themodification instruction, and inserts the new control and the attributesin the representation at the location indicated by the modificationinstruction.
 5. The content modification system of claim 1, wherein theat least one modification instruction comprises a modificationinstruction to remove a control from the representation, and the handlerparses the representation to identify the control to be removed, andremoves the control from the representation.
 6. The content modificationsystem of claim 1, wherein the treatment controller determinesattributes for the controls in the modified representation, generates afile specifying the controls and the attributes, sends the file and themodified representation of the requested web page to a site optimizer,receives an indication of a modification to an attribute of one of theattributes for the control from the site optimizer, further modifies themodified representation of the requested web page to include themodification of the attribute, and converts the further modifiedrepresentation to HTML.
 7. A method comprising: receiving a user requestat a web server for content; sending a message to an optimizationdigital platform for a content modification instruction; receiving arepresentation of the requested content from the optimization digitalplatform, wherein the representation includes controls representingelements of the requested content; receiving at least one modificationinstruction for the requested content, wherein the at least onemodification instruction identifies a control in the representation tomodify; executing, by a processor, a handler to interface with therepresentation to identify the control in the representation to bemodified and to modify the control in the representation as specified inthe at least one modification instruction; converting the modifiedrepresentation of the requested content to a format viewable by a userat a user device; and sending the converted modified representation ofthe requested content to the web server, wherein the web server isoperable to send the converted modified representation of the requestedcontent to the user device as a response to the user request.
 8. Themethod of claim 7, comprising: sending a message to the optimizationdigital platform requesting modification instructions for the request,wherein the receiving a representation of the requested content and thereceived at least one modification instruction are received from thedigital optimization platform in response to the message requesting themodification instructions.
 9. The method of claim 7, wherein the atleast one modification instruction for the requested content includes anindication to modify an attribute of the control, and executing thehandler to modify the control comprises: parsing the representation toidentify the control to be modified; identifying the attribute in thecontrol to be modified; and modifying the attribute as specified in theat least one modification instruction.
 10. The method of claim 7,wherein the at least one modification instruction comprises amodification instruction to insert a new control in the representationand the executing the handler to modify the control comprises:determining a location of the new control and attributes for the newcontrol from the modification instruction; and inserting the new controland the attributes in the representation at the location indicated bythe modification instruction.
 11. The method of claim 7, wherein the atleast one modification instruction comprises a modification instructionto remove a control from the representation, and the executing thehandler to modify the control comprises: parsing the representation toidentify the control to be removed; and removing the control from therepresentation.
 12. The method of claim 7, wherein the representationcomprises a control tree specifying the controls for the requestedcontent.
 13. The method of claim 7, wherein converting the modifiedrepresentation of the requested content to a format viewable by a userat a user device comprises: rendering the representation to HTML, whichis viewable in a browser at the user device.
 14. The method of claim 7,wherein a treatment controller hosted at the web server performs theexecution of the handler to interface with the representation toidentify the control in the representation to be modified and to modifythe control according as specified in the at least one modificationinstruction and the converting of the modified representation of therequested content to a format viewable by a user at a user device. 15.The method of claim 7, further comprising: determining attributes forthe controls in the modified representation; generating a filespecifying the controls and the attributes; sending the file and theconverted modified representation of the requested content to a siteoptimizer 121; receiving an indication of a modification to an attributeof one of the attributes for the control from the site optimizer 121;further modifying the modified representation of the requested contentto include the modification of the attribute; and converting the furthermodified representation of the requested content to the format viewableby the user at the user device.
 16. A non-transitory computer readablemedium having stored thereon machine readable instructions, the machinereadable instructions when executed causes a computer system to performat least: receiving a user request at a web server for content; sendinga message to an optimization digital platform for a content modificationinstruction; receiving a data structure representing the requestedcontent from the optimization digital platform, wherein the datastructure includes controls representing elements of the requestedcontent; receiving at least one modification instruction for therequested content from the optimization digital platform, wherein the atleast one modification instruction identifies a control in the datastructure to modify; executing, by a processor, a handler to interfacewith the data structure to identify the control in the data structure tobe modified and to modify the control in the data structure as specifiedin the at least one modification instruction; converting the modifieddata structure of the requested content to a format viewable by a userat a user device; and sending the converted modified representation ofthe requested content to the web server, wherein the web server isoperable to send the converted modified representation of the requestedcontent to the user device as a response to the user request.
 17. Thenon-transitory computer readable medium of claim 16, wherein the methodcomprises: sending a message to the optimization digital platformrequesting modification instructions for the request, wherein the datastructure and the at least one modification instruction are receivedfrom the digital optimization platform in response to the messagerequesting the modification instructions.
 18. The non-transitorycomputer readable medium of claim 16, wherein the at least onemodification instruction for the requested content includes anindication to modify an attribute of the control, and executing thehandler to modify the control comprises: parsing the data structure toidentify the control to be modified; identifying the attribute in thecontrol to be modified; and modifying the attribute as specified in theat least one modification instruction.
 19. The non-transitory computerreadable medium of claim 16, wherein the at least one modificationinstruction comprises a modification instruction to insert a new controlin the representation and the executing the handler to modify thecontrol comprises: determining a location of the new control andattributes for the new control from the modification instruction; andinserting the new control and the attributes in the data structure atthe location indicated by the modification instruction.
 20. Thenon-transitory computer readable medium of claim 16, wherein the atleast one modification instruction comprises a modification instructionto remove a control from the representation, and the executing thehandler to modify the control comprises: parsing the data structure toidentify the control to be removed; and removing the control from therepresentation.